Voice communication between users in medium size and large businesses is typically established over a network, such as a LAN or a WAN, for example, using IP phones. An IP phone customarily incorporates a TFTP (Trivial File Transfer Protocol) client for downloading software loads. TFTP is a simple file transfer protocol used for downloading bootcode to diskless devices, such as IP phones. TFTP is set forth in RFC 1350 published by the Network Working Group in July 1992. When the IP phone is first connected to the network or when software upgrades are required, the TFTP client downloads a software load of executable binary files from a central TFTP server, such as a PBX, for storage in a flash memory (ROM, PROM, EPROM, EEPROM, etc. . . . ) of the device.
In order to execute the downloaded program, the device must first load the program from flash memory to RAM using a small program known as a bootloader. Although the size of such executable program files is approximately only 256 KB in older systems, the size has grown to approximately 4 MB for modern IP phones, and continues to grow. If the storage space in flash memory is smaller than the space required to store the program, it is known in the art to fully compress the program before it is stored.
For example, U.S. Pat. No. 5,530,847 (“System and method for loading compressed embedded diagnostics”) discloses a system and method for loading code from an EEPROM to RAM. When the space available on the EEPROM is smaller than the code, the code is compressed before being stored in the EEPROM. When the code is retrieved from the EEPROM, it must first be decompressed before it is loaded into RAM. Decompressing a program that has been fully compressed can be very time consuming (e.g. up to one minute), especially if the device bootloader does not have cache memory enabled.
U.S. Pat. No. 6,282,643 B1 discloses a BIOS application that loads uncompressed and compressed code into RAM at initialization. The portion of code that is compressed remains the same irrespective of memory available in the RAM.
In addressing the problem of decompression time, it is known in the art either to increase the available space in the flash memory or use a low efficiency compression algorithm. The former solution can significantly increase the cost of the flash memory, whereas the latter solution requires the bootloader to support multiple compression algorithms, thereby also increasing complexity and cost.